技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
28
0
Software Development
RISC-V 與處理器之架構學習及應用
系列 第
28
篇
[Day28] CALL: Loader (4/5)
16th鐵人賽
凱特
2024-10-12 01:23:37
87 瀏覽
分享至
1.
Loader 的作用
:
輸入
:Loader 的輸入是已編譯並連結好的可執行檔案(例如,
a.out
for RISC-V)。
輸出
:Loader 的輸出是程式開始執行,將可執行檔載入記憶體並啟動程式。
可執行檔
:可執行檔存儲於磁碟上,當執行一個程式時,Loader 將其載入記憶體,並開始運行該程式。
操作系統角色
:實際上,Loader 是作業系統(OS)的一部分,負責將程式載入記憶體。載入程式是 OS 的一項任務。
2.
Loader 的具體功能
:
將程式載入新的位址空間
:
Loader 首先讀取可執行檔案的文件頭,以了解文本段和數據段的大小。
它會創建一個新的位址空間,該空間足夠存儲文本段、數據段以及一個堆疊段。
Loader 會將可執行文件中的指令和數據複製到新的位址空間中,並將傳遞給程式的參數複製到堆疊上。
初始化機器暫存器
:
大多數的暫存器會被清除,並且
堆疊指標(stack pointer,sp)
會被指向堆疊的第一個空閒位址。
跳轉到啟動程式
:
Loader 會跳轉到啟動程式(start-up routine),該程式會執行以下操作:
將傳遞給程式的參數從堆疊中複製到暫存器中,並設置程式計數器(PC)。
如果主程式(main routine)執行完畢,則通過 exit 系統呼叫終止程式。
3.
Loader 的詳細工作流程
:
讀取可執行檔案頭
:Loader 從可執行檔案中提取文本段和數據段的大小和位置,並在記憶體中分配相應的空間。
創建位址空間
:Loader 創建一個新的記憶體位址空間,並確保它有足夠的空間來存儲程式的文本、數據段,以及一個堆疊段。
複製數據
:將程式的指令和數據從可執行檔案中複製到位址空間。Loader 也會將傳遞給程式的參數放入堆疊中,以便程式能夠訪問這些參數。
初始化暫存器
:堆疊指標
sp
被初始化為堆疊的起始位址,其他暫存器則被清零。
跳轉到程式的啟動地址
:Loader 將程式的控制權交給其啟動程式,並設置程式計數器(PC)以開始執行程式。如果主程式返回,Loader 會執行系統呼叫來結束程式的執行。
留言
追蹤
檢舉
上一篇
[Day27] CALL: Linker (3/5)
下一篇
[Day29] 總結與流程 (5/5)
系列文
RISC-V 與處理器之架構學習及應用
共
30
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
26
[Day26] CALL: Assembler (2/5)
27
[Day27] CALL: Linker (3/5)
28
[Day28] CALL: Loader (4/5)
29
[Day29] 總結與流程 (5/5)
30
[Day30] 從抽象層次到效能改善
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22129
篇
完賽人數
595
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
網域切換的技術詢問
請問各位大神,有辦法更改家中的網路對外IP嗎 Orz
請問華碩分享器的系統紀錄這是在說明什麼
Mail server 資料不見
PDF簽章疑問
AD USER 多重登入問題
請問有 PDF 能一張一張翻譯加AI分析的方便工具嗎?
自家網站DNS連線逾時會載入很慢
请教两个问题(文字和手机
MSSQL 滿3個月的算法
熱門回答
請問各位大神,有辦法更改家中的網路對外IP嗎 Orz
JS 是否可以匯入「.xls」
自家網站DNS連線逾時會載入很慢
網路查詢指令應用
Exchange 刪除使用者 救回信件
熱門文章
當了兩個月的轉職工程師是怎樣的感覺?
iPhone升級iOS18之後 Vigor Router Firewall 路由器 防火牆 SmartVPN Client 問題
入門 ASP.NET Web Forms:建立您的第一個 Web 應用程式
Python 檔案處理:開啟、讀取、寫入與關閉
Python 字典{ dict }的不可變鍵、setdefault() 和 get()
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}